﻿<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>通用报表管理器</title>
    <link href="../manual.css" rel="stylesheet" type="text/css">
    <script src="../js/toc.js"></script>
    <script src="../js/jquery.min.js"></script>
    <script src="../js/back_to_top.js"></script>
</head>
<body onload="generateTOC(document.getElementById('toc'));">
    <header>
        <nav><small><a id="go_home" href="../index.html?lang=zh_CN">帮助主页</a></small></nav>

        <a href="#" id="back-to-top"><img src="../img/backtotop.png" alt="回到顶部" /></a>
        <!--Smooth Back to Top Button End-->

        <h1>通用报表管理器</h1>
    </header>

    <!-- ToC generated by Javascript -->
    <nav id="toc"></nav>

    <h2>打开通用报表管理器</h2>
    <p>
        调用通用报表管理器 (<abbr>GRM</abbr>) 工具或使用主菜单
        <kbd><samp>工具</samp> &rarr; <samp>通用报表管理器&hellip;</samp>
        </kbd>。
    </p>
    <img class="shadow" alt="工具栏" src="../en_GB/grm_toolbar.png">

    <h2>添加新报表</h2>
    <p>有两个选项可供选择。</p>

    <h3>从零开始创建报表</h3>
    <ol>
        <li>使用导航树，右键点击
            <kbd><samp>报告</samp></kbd> 标签。</li>
        <li>选择菜单项： <kbd><samp>新建空报告</samp></kbd></li>
        <li>输入该报表所属组别名称和报表名称。</li>
        <li>如需重命名，右击报表，选择<kbd><samp>重命名报表</samp></kbd>。</li>
        <li>将显示如下选项卡：输出、SQL、Lua、模板及描述。</li>
        <li>
            在SQL选项卡中，输入SQL语句，SQL语句应以分号结尾，无误后按<kbd><samp>保存</samp></kbd>。
        </li>
        <li>点击<kbd><samp>测试</samp></kbd>以执行SQL语句。</li>
        <li>若测试通过，<kbd><samp>创建模板</samp></kbd>按钮将变为可用。 单击该按钮，将为报表生成HTML模板。</li>
        <li>单击<kbd><samp>运行</samp></kbd>，在输出界面即可看到报表。</li>
    </ol>
    <img class="shadow" alt="从零开始创建新报表"
    src="../en_GB/grm.gif">

    <h4>报表参数</h4>
    <p>
        1.4.0 版本的MMEX ，可将日期插入报表 SQL 语句中。
        四种参数选项可用：<var>&single_date</var>，<var>&begin_date</var>，<var>&end_date</var>, <var>&budget_years</var>。
        如果SQL语句中包含上述参数之一，将
        从日历范围替换。
        例如，此 SQL语句返回
        指定日期的所有账户余额：
    </p>
<pre><code class="language-sql">with b as  (
    select ACCOUNTID, STATUS
        , (case when TRANSCODE = 'Deposit' then TRANSAMOUNT else -TRANSAMOUNT end) as TRANSAMOUNT
        , TRANSDATE
    from CHECKINGACCOUNT
    union all
    select TOACCOUNTID, STATUS, TOTRANSAMOUNT ,TRANSDATE
    from CHECKINGACCOUNT
    where TRANSCODE = 'Transfer'
    )
select a.ACCOUNTNAME,
total(TRANSAMOUNT) + a.INITIALBAL as Balance
from ACCOUNTLIST as a, b
where a.STATUS = 'Open'
    and b.ACCOUNTID = a.ACCOUNTID
    and b.STATUS &lt;&gt; 'V'
    and b.TRANSDATE &lt;= '<var>&single_date</var>'
group by a.ACCOUNTNAME order by a.ACCOUNTNAME asc;
</code></pre>
    <img class="shadow" alt="使用单个日期参数输出报表
    示例" src="../en_GB/grm_custom_date.png">

    <h3>导入报表</h3>
    <p>
        在
        <a href="https://github.com/moneymanagerex/general-reports/releases">GitHub</a> 上MMEX用户或开发者提供了大量报表。
    </p>

    <h2>导出报表</h2>
    <p>
        可将创建的报表导出至ZIP格式文件。
    </p>

    <footer><p><small>
        所有权利保留&copy; 2005-2009 Madhan Kanagavel<br>
所有权利保留&copy; 2013-2019 MMEX contributors<br>
<span id="translator">翻译：MMEX社区成员</span>
    </small></p></footer>
    <script>
        var LANG = document.getElementsByTagName('html')[0].getAttribute('lang');
        var tr = document.getElementById("translator");
        if (LANG == 'en')
            tr.parentNode.removeChild(tr);
    </script>

</body>
</html>
